home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / pbc_bas.exe / FORCEMAT.BAS < prev    next >
BASIC Source File  |  1993-01-01  |  1KB  |  45 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        PBClone  Copyright (c) 1990-1993  Thomas G. Hanlin III        |
  4. '   |                                                                      |
  5. '   +----------------------------------------------------------------------+
  6.  
  7.    DECLARE SUB StripChar (St$, Ch$, StLen%)
  8.  
  9. FUNCTION ForceMatch$(Pattern$, SourceFile$)
  10.    a$ = Pattern$
  11.    GOSUB Regularize
  12.    Pat$ = a$
  13.    a$ = SourceFile$
  14.    GOSUB Regularize
  15.    Src$ = a$
  16.    FOR tmp% = 1 TO 12
  17.       IF MID$(Pat$, tmp%, 1) = "?" THEN
  18.          Result$ = Result$ + MID$(Src$, tmp%, 1)
  19.       ELSE
  20.          Result$ = Result$ + MID$(Pat$, tmp%, 1)
  21.       END IF
  22.    NEXT
  23.    StripChar Result$, " ", tmp%
  24.    ForceMatch$ = LEFT$(Result$, tmp%)
  25.    EXIT FUNCTION
  26.  
  27. Regularize:
  28.    t% = INSTR(a$, ".")
  29.    IF t% THEN
  30.       l$ = LEFT$(a$, t% - 1)
  31.       r$ = MID$(a$, t% + 1)
  32.    ELSE
  33.       l$ = a$
  34.       r$ = ""
  35.    END IF
  36.    l$ = LEFT$(l$, 8)
  37.    r$ = LEFT$(r$, 3)
  38.    t% = INSTR(l$, "*")
  39.    IF t% THEN l$ = LEFT$(l$, t% - 1) + STRING$(9 - t%, "?")
  40.    t% = INSTR(r$, "*")
  41.    IF t% THEN r$ = LEFT$(r$, t% - 1) + STRING$(4 - t%, "?")
  42.    a$ = LEFT$(l$ + SPACE$(8), 8) + "." + LEFT$(r$ + SPACE$(3), 3)
  43.    RETURN
  44. END FUNCTION
  45.